package br.com.javagyn.OLD;

import java.util.List;

import javax.enterprise.context.RequestScoped;
import javax.faces.event.AjaxBehaviorEvent;
import javax.inject.Inject;
import javax.inject.Named;

import br.com.javagyn.controller.AppController;
import br.com.javagyn.exception.NegocioException;

@Named
@RequestScoped
public class LancamentoController extends AppController {

	private static final long serialVersionUID = 1L;

	@Inject
	private LancamentoService lancamentoService;

	@Inject
	private PessoaService pessoaService;

	@Inject
	private LancamentoForm lancamentoForm;

	@Override
	public void iniciarDados() {
		this.getLancamentoForm().setEntidades(this.getLancamentoService().listagemLancamentos());
	}

	public void prepararCadastro() {
		this.getLancamentoForm().setTodasPessoas(this.getPessoaService()
				.listagemPessoas());
		if (this.getLancamentoForm().getEntidade().getId() == null) {
			this.getLancamentoForm().setEntidade(new Lancamento());
		}
	}

	public void salvar() {
		try {

			this.getLancamentoService().salvar(this.getLancamentoForm().getEntidade());
			this.getLancamentoForm().setEntidade(new Lancamento());
			messageInfo("Lançamento salvo com sucesso!");

		} catch (NegocioException e) {

			messageError(e.getMessage());
		}
	}

	public void excluir() {

		try {
			this.getLancamentoService().excluir(this.getLancamentoForm()
					.getConsulta());
			this.iniciarDados();
			messageInfo("Lançamento excluido com sucesso!");

		} catch (NegocioException e) {

			messageError(e.getMessage());
		}
	}

	public void dataVencimentoAlterada(AjaxBehaviorEvent event) {

		if (this.getLancamentoForm().getEntidade().getDataPagamento() == null) {

			this.getLancamentoForm().getEntidade().setDataPagamento(
					this.getLancamentoForm().getEntidade().getDataVencimento());
		}
	}

	public List<String> pesquisarDescricoes(String descricao) {
		return this.getLancamentoService().descricoesQueContem(descricao);
	}

	public LancamentoService getLancamentoService() {
		return lancamentoService;
	}

	public PessoaService getPessoaService() {
		return pessoaService;
	}

	public LancamentoForm getLancamentoForm() {
		return lancamentoForm;
	}

}
